﻿#pragma once
#ifndef WRWORKDOMAINACTIVATOR_H
#define WRWORKDOMAINACTIVATOR_H

#include "../WRGlobal.h"
#include "../../WRSoft-Utility/Runtime/WRClassActivator.h"
#include <QDomElement>

//工作域激活器类型标识 {2B1D1741-CB33-49DD-8CCC-18F1FBA70112}
#define WRWorkDomainActivatorType QUuid(0x2b1d1741, 0xcb33, 0x49dd, 0x8c, 0xcc, 0x18, 0xf1, 0xfb, 0xa7, 0x1, 0x12)

namespace WRTypes
{
    //获取工作域激活器类型。
    WRSOFT_WORKING_COMMON_API WRType* workDomainActivator(void);
}

//声明工作域类。
class WRWorkDomain;
//声明工作程序类。
class WRWorkDaemon;

//表示工作域创建器。
class WRSOFT_WORKING_COMMON_CLASS WRWorkDomainActivator : public WRClassActivator
{
private:
    //禁用复制构造函数和赋值操作符。
    Q_DISABLE_COPY(WRWorkDomainActivator)

protected:
    //初始化工作域创建器。
    inline WRWorkDomainActivator(void)
    {
        //add code here
    }
    //释放当前对象所占用的相关资源。
    ~WRWorkDomainActivator(void)
    {
        //add code here
    }

public:
    //获取当前对象类型。
    WRType* type(void) const;
    //创建工作域实例。
    virtual WRWorkDomain* create(WRWorkDaemon* daemon, const QDomElement& config) = 0;
};

#endif // WRWORKDOMAINACTIVATOR_H
